\documentclass{ctexart}
\usepackage{appendix}
\usepackage{listings}%插入代码
\usepackage{xcolor} 
\usepackage{graphicx}%插入表格
\usepackage{booktabs} %绘制表格
\usepackage{caption} %标题
\usepackage{geometry}
\usepackage{array}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{subfigure} %插入图片
\usepackage{longtable}
\usepackage{abstract}%摘要
\pagestyle{plain} %页眉消失
\usepackage{setspace}
\usepackage{multirow}%表格
\usepackage{diagbox}
\usepackage{enumerate}%序号
\usepackage{float}%固定图片或表格的位置
\usepackage{gensymb}
\usepackage{microtype}
\usepackage{url}
\usepackage{bm}

\def\al{\alpha}
\def\b{\beta}
\def\t{\theta}
\def\c{\circ}
\def\sn{\sum_{i=1}^9}
\def\sm{\sum_{i=1}^{14}}
\def\d{\Delta}
 
\geometry{a4paper,left=2.6cm,right=2.6cm,top=2.0cm,bottom=2.0cm}%页边距
\lstset{
	numbers=left, %设置行号位置
	numberstyle=\tiny, %设置行号大小
	keywordstyle=\color{blue}, %设置关键字颜色
	commentstyle=\color[cmyk]{1,0,1,0}, %设置注释颜色
	escapeinside=``, %逃逸字符(1左面的键)，用于显示中文
	breaklines, %自动折行
	extendedchars=false, %解决代码跨页时，章节标题，页眉等汉字不显示的问题
	xleftmargin=1em,xrightmargin=1em, aboveskip=1em, %设置边距
	tabsize=4, %设置tab空格数
	showspaces=false %不显示空格
}
 
\title{基于长短期记忆网络的宏观经济周期大类资产配置策略}
\date{2022/11/8}
 
\begin{document}
	\maketitle
	\renewcommand{\abstractname}{\Large 摘要\\}
	\begin{abstract}
		\normalsize
		本文首先利用主成分分析法与层次聚类分析找出高频有效的宏观经济指标，并划分了国内过去20年的宏观经济状态。
		并通过数学模型对未来五年中国的经济环境进行预测。
		通过分析找出代表大类资产的指数，并计算其相关收益风险指标和相关性。
		最后基于预测的结果使用大类资产指数构建出投资组合。

		在问题1中，考虑到附件一种所给出的数据类型繁多，以及样本数据规模大小不一，本文重新寻找了更加有效，更加贴合中国经济状态的15种宏观经济指标。
		并使用KMO检验出主成分分析的适用性，利用主成分分析的方法对找出的15种备选指标进行分析，寻找出了以国内生产总值（GDP）、
		居民消费价格指数（CPI）、商品零售价格指数（RPI）和消费者信心指数（CCI）4个指标为指导的经济指标。
		建立中国宏观经济状态模型，将经济周期划分为扩张、过热、滞涨、萎靡、苏醒、复苏6个经济状态。
		2001-2021年国内的宏观经济运行状况划分如下：2001年-2002年扩张期，2003年-2004年过热期，2005年滞涨期，2006年-2011年萎靡期
		2012年-2015年苏醒期，2015年-2019年复苏期，2020年-2021年萎靡期。

		在问题2中，利用excel与matlab中自带的数据处理、数据回归和数据预测工具，对上文求解的4个经济指标一共3类经济指标未来5年数据进行预测。
		发现预测工具大致合理，并发现其一定局限性，分析出疫情等相关因素对未来五年经济状态的影响不可忽略。
		最后指出中国未来五年内的宏观经济环境处于萎靡期。

		在问题3中，首先对股票、大宗商品、债券三个大类资产指数分别进行KMO检验，得出股票四个指数的KMO值为0.7354，大宗商品两个指数的KMO值约为0.5，
		债券三个指数的KMO值为0.7165。仅股票和债券适合使用主成分分析的方法选取出比重较大的指数，选取中证500指数代表股票、中债-综合财富(3-5年)指数作为债券的代表指数。
		由于大宗商品部分所给的指数在相对趋势中呈现基本一致的情况，故根据推崇程度选择标普高盛商品全收益指数来代表大宗商品。现金及其等价物部分则直接选取货币基金代表。
		接着对四个代表四个大类资产的指数进行测算收益率，得出中证500指数总体呈现增长，在经济过热滞涨与复苏期间呈现周期性轻微负收益；标普高盛商品全收益指数在经济扩张与过热期间迅猛增长，在经
		济萎靡与经济苏醒期间呈现负增长的趋势，随后恢复稳定；中债中综合财富(3-5)年指数与货币基金较为稳定，保持在0\%收益率附近。

		在问题4中，首先利用问题三中求解的指标进行归一化，以风险最低化为目标函数，使用拟牛顿法解决不动点迭代的最优化问题。
		其中设置未来五年总收益率为200\%，每256个交易日也就是每一年进行比重的调整，调整基于的数据为过去一年四个大类资产相关
		指数的数据。
		最终我们求解出最优配置，在最优资产配置下，期望收益率标准差为0.2811，是较小的数值，说明该配置的收益率较为稳定，
		并且 该配置的风险水平较低。

		\textbf{关键字}：\bf{主成分分析；层次聚类分析；神经网络预测；大类资产配置；不动点迭代}
	\end{abstract}
	\newpage

	\section{问题的背景}

	全球资产配置之父 Gary P.Brinson 的研究表明，从长远看，超过 90\% 的投资收益都是来自于成功的大类资产配置。
	大类资产是具有相似性之资产的聚类，配置时将投资资金在不同资产类别之间进行分配。
	大类资产配置同时也具备了天然的风险控制优势。
	在大类资产配置实践中一定会面临动态调整问题，然而大类资产配置动态调整的核心在于对未来宏观经济的判断以及大类资产的预测，针对中国的投资者与投资环境，需要一套更为合适的宏观经济与大类资产预测组合。
	
	\section{问题的重述}

	赛题提供了两大类的数据，宏观经济指标数据以及大类资产指数行情数据。通过宏观经济指标数据完成赛题1、2问，通过大类资产指数数据完成赛题3、4问。
	
	1.	寻找出高频有效的宏观经济指标，将过去20年国内的宏观经济运行状况划分为不同的经济状态。
	
	2.	通过数学模型模拟中国未来五年的宏观经济环境，并划分出未来五年中国的经济状态，该经济状态时第1问划分出的哪一个经济状态。
	
	3.	从大类资产指数数据中挑选出可以分别代表股票、大宗商品、债券、现金及其等价物的四个指数，预测出该指数再各种经济状态下的风险收益特征，以及各个指数之间的相关性。
	
	4.	利用建立出的经济模型预测出中国未来五年的经济状态，以合适的大类资产指数构建出较好的大类资产投资组合，并预测计算该组合的风险收益特征。

\vspace{0.5em}

	\section{模型假设}
\begin{enumerate}
	\item 假设2001年-2021年中国经济环境受到选定的指标影响极大，最大程度忽略所给指标外的因素造成的影响。
	\item 假设未来5年中国经济环境仅依赖于所给的经济指标。

\end{enumerate}
	
\section{符号说明}
	\begin{center}
		\setlength{\tabcolsep}{9mm}{
			\begin{tabular}{ccc}
				\toprule  %添加表格头部粗线。
				\textbf{符号} & \textbf{意义} & \textbf{单位}\\
				$r_{ij}$ & 相关系数 & -\\
				$\alpha_{ij}$ & 偏相关系数 & -\\
				$x_{ij}$ & 指标数据 & -\\
				$h_{t-1}$&元胞前一个输入&-\\
				$x_t$	&元胞当前输入&-\\
				$b_f$    &偏置项&-\\
				$\tilde{C_t}$	&候选向量&-\\
				$C_t$	 &新的细胞状态&-\\
				$C_t-1$		&上一个细胞状态&-\\
				$\bm{\omega}$& N维的投资组合&-\\
				$\bm{\Sigma}$& N个资产的收益率协方差&-\\
				$\bm{\mu}$   & 期望收益率&-\\
				$\rho$       & 期望收益率水平&-\\
				$L_1$		 &  常数&-\\
				$p$			 & 调仓周期&交易日\\
				$sp$		 & 夏普比率&-\\
				\midrule  %添加表格中横线
				
				\bottomrule %添加表格底部粗线
		\end{tabular}}
	\end{center}
	\section{问题分析}

	问题一首先需要寻找出高频有效的宏观经济指标，利用主成分分析方法寻找出对宏观经济状态影响力较大的指标，再利用聚类分析将这些指标分类，希望最终寻找出的指标可以代表宏观经济中的不同方面，
	并且相互之间影响较小，从而可以利用各个指标组成类封闭多面体的状态，分析各个指标在不同的升降组合下的经济特征变动，对不同的经济状态有清晰准确的划分。

	问题二则要求模拟未来五年中国的经济状态，可以通过问题1所建立的状态划分模型，利用  宏观经济模型，采用  智能算法模拟出中国
	未来五年的经济增长、通胀、利率等宏观经济环境，并判断中国所处的经济状态处于问题1中划分的哪一个经济状态下。该问题属于较为简单的判断问题。

	问题三要求首先继续使用主成分分析的方法从四类资产中每个挑选出最能代表该类资产的指数，
	然后对于四个代表四类资产的指数进行预测和计算风险收益特征，最后对于各指数进行相关性分析。

	问题四选择对未来五年的经济状态进行预测并选出各时期合适的投资组合，然后计算组合的风险收益特征。

	\newpage
	\section{问题一模型建立与求解}
	\subsection{问题(1)模型的建立与求解}
	在问题一中，由于附件1中所给出的指标数量太多，需要先利用主成分分析的方法，精准寻找出对宏观经济环境有较大影响的指标，再利用聚类分析的方法再次筛选，
	寻找出更加高频有效的宏观经济指标。
	由于附件一中所给的指标数据统计起始与结束的时间不一，并且统计的周期单位从天到年不等，故小队采取从统计网站上截取数据，并力争与附件一中所涵盖的经济方面相同。
	进行主成分分析的前提，需要对数据进行KMO检验，以确定数据可以很好的进行主成分分析，可以获取更好的结果。
	若发现某种指标组合的KMO值过低，则采取人工选择的方法，不断调整进行KMO检验的指标，以最终得到KMO值较高的指标，再进入主成分分析的过程。
	
	\subsubsection{指标的KMO检验}
	KMO ( Kaiser- Meyer- Olkin- Measure of Sampling Adequacy) 检验是从比较原始变量之间的简单相关系数和偏相关系数的相对大小出发来进行的检验。
	当所有变量之间的偏相关系数的平方和, 远远小于所有变量之间的简单相关系数的平方和时, 
	变量之间的偏相关系数很小, KMO 值接近1, 变量适合进行主成分分析。KMO 值的计算公式为:

	\begin{align}
		KMO=\frac{\sum \sum_{i\neq j} r_{ij}^2}{\sum \sum_{i\neq j} r_{ij} + \sum \sum_{i\neq j} \alpha_{ij}^2}\\
	\end{align}
	其中$r_{ij}$ 表示相关系数，$\alpha_{ij}^2$ 表示偏相关系数。

	在KMO检验中，计算所得出的KMO值越接近1则主成分分析的适用性越高，越低则反之。

	在本文选取的数据中，KMO=0.6.
	属于中等的数值，因此选取的指标的主成分分析是具有一定的有效性的。

	从网上找出的数据中，由于存在某一指标如Shibor指标，缺失早期数据，因此本文利用了曲线拟合与神经网络预测的方法，将该指标早期数据补全，以完成KMO值的计算。


	\subsubsection{指标的主成分分析}
	假设有n个样本，p个指标，构成的n$\times$p的样本矩阵x：
	
	\begin{align*}
		&x=\begin{pmatrix}
			x_{11}&x_{12}&\cdots&x_{1p}\\
			x_{21}&x_{22}&\cdots&x_{2p}\\
			\vdots&\vdots&\ddots&\vdots\\
			x_{n1}&x_{n2}&\cdots&x_{np}
		\end{pmatrix}=(x_1,x_2,\cdots,x_p)
	\end{align*}

	另外设立变量$z_1, z_2, \cdots, z_m (m\leq p)$，并且满足：
	\[\left\{
		\begin{aligned}
			z_1&=l_{11}x_1+l_{12}x_2+\cdots+l_{1p}x_p\\
			z_2&=l_{21}x_1+l_{22}x_2+\cdots+l_{2p}x_p\\
			&\vdots\\
			z_m&=l_{m1}x_1+l_{m2}x_2+\cdots+l_{mp}x_p
		\end{aligned}
	\right.
	\]
	在主成分分析中，目的就是要找寻出多个$Z$的表达式，从而计算出指标的贡献率。

	小队从网上所找寻出了大小相等的数据，并首先使用计算去除指标的量纲。
	接着计算每一个指标的每一个数据之间的协方差，组成协方差矩阵。
	计算出主成分特征向量，并最终保留主成分的值。
	对于题目一，具体数值和结果如下文。

	在本文的主成分分析当中，一共选出了4个主成分。
	本文所使用的主成分分析得出的各个指标的总贡献率为（从大到小排序）
	\begin{align*}
		rate=[59.562,15.976, 8.060,7.060, 5.673,2.171,0.803, 0.296,0.221,0.0796,\\
		0.0509,0.0288,0.0178,0.001, 0.000241]
	\end{align*}
	部分省略了小数点后三位。

	并得到了特征矩阵（符号为vec2）。
	利用特征矩阵以及没一指标的贡献率，我们可以计算的出对整个宏观经济环境造成影响最大的指标分别为国内生产总值（GDP）、
	居民消费价格指数（CPI）、商品零售价格指数（RPI）和消费者信心指数（CCI）。
	具体算法以及得出结果的MATLAB代码在附录以及附件当中。

	因此我们可以对主成分分析中的4个指标进行深入的层次聚类分析分类以达到对宏观经济环境的分类和定义。

	\subsubsection{主指标的聚类分析}
	通过进一步分类主成分分析所得出的指标，我们可以得出每一个大类之间不同的变化趋势对宏观经济环境的影响。
	在该分类方法中，本文使用欧氏距离来刻画不同指标之间数据的差异。
	并且主要使用凝聚法来对每一个指标进行分类。

	1.选择变量

	选择需要聚类的样本，就是需要聚类的数据集

	首先我们选择以每一年的一共4个指标作为样本，计算每一个指标之间的欧氏距离

	\begin{align*}
		d(x,y)=\sqrt[]{(x-y)'(x-y)} = \sqrt[]{\sum_j (x_j-y_j)^2}
	\end{align*}
	此处的x，y分别代表了每一项指标的某一年数据。
	如果样本之间存在物理上的关联，比如下一样本的产生与上一样本具有相同的欧氏距离。
	则将每个样本看成一个簇，计算每一类（样本）与其他类（样本）之间的相似度/距离，将样本距离按从小到大进行排序，按照从距离/相似度距离进行不断连接。

	将刚刚主成分分析中得出的4个经济指标进行聚类分析，得出的结果为将该4个指标分成三类，分别为GDP为一类，CPI和RPI为一类，CCI为一类。
	因此在进行2001 年-2021 年国内的宏观经济运行状况的划分时，可以利用该三大类各自的不同变化对整个经济状况影响进行模拟，
	分析不同变化如GDP上升、CPI下降时对经济的影响，并对该状态进行较为准确的定义，以便完成整个宏观经济模型的基础建立。

	\subsubsection{基于该指标的经济状态划分}
	从聚类分析中可以得知一共将经济指标分为三类，其中可以对CPI与RPI再次进行主成分分析，以获得一项综合的经济指标。
	经过分析与比较可以大致得出CPI与RPI的类簇与经济上的通胀有这密切的关系，而GDP则与国民经济指数相关，是该经济环境总体的概括性指标，
	CCI信心指数则是和未来一段时间内的经济环境有关，可以作为未来经济环境变化的重要参考指标。

	由于三类指标与美林投资时钟所选取的两类指标相同，但是添加了信心指数CCI，我们可以在美林投资时钟理论的基础上对国内经济状态进行划分。
	这三类指标也简介表征了美林投资时钟在中国宏观经济描述与预测上存在偏差，尽管美林时钟中涵盖的两大类指标GDP与CPI对全球宏观经济环境具有描述性，
	同时也对中国基金市场具有有效性，但在描述国内长期宏观经济环境时，却具有描述不完备的情况。
	因此在主成分分析的结果中，引入了国民信心指数作为宏观经济环境描述的一个指标是合理且有效的。下面是对不同经济环境的定义。

	首先我们利用主成分分析当中计算过的归一化指标数据，对过去20年国内的经济状况进行画图，经过分析可以得出在美林时钟的基础上添加信心指数CCI即可完成对国内经济状态的分类。
	按照GDP、通胀与CCI的不同搭配，我们将宏观经济周期划分为6个阶段：

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.3]{6.png}
		\caption{经济周期}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.5]{3.png}
		\caption{指标归一化图像}
	\end{figure}


\begin{itemize}
	\item “经济上行，通胀上行，信心上行”构成扩张阶段，在此阶段，由于高增速的GDP拉高了CPI，经济通胀压力上升，在信心指数高涨的持续影响下带动经济运行，使总体的经济环境呈现高速增长的状态。
	\item “经济上行，通胀上行，信心下行”构成过热阶段，在此阶段，通胀上升增加了持有现金的机会成本，在扩张期的基础上，信心指数低导致了经济运行速度放缓，会导致未来的经济持续走低，因此此阶段为经济运行状态的最高位。
	\item “经济下行，通胀上行，信心下行”构成滞涨阶段，在此阶段，物价的持续走高以及消费者经济水平的下滑，导致宏观经济调控将导致经济增速的下降，同时由于宏观经济水平低信心指数也持续走低。
	\item “经济上行，通胀下行，信心下行”构成萎靡阶段，在此阶段，整个经济环境进入萧条期，经济流动性弱，经济预期值低。
	\item “经济上行，通胀上行，信心下行”构成苏醒阶段，在此阶段，宏观经济调控促进经济流动性，经济环境开始由萎靡转好，同时由于信心指数的滞后性，使得整个阶段是由经济自身调控利好。
	\item “经济上行，通胀上行，信心上行”构成复苏阶段，在此阶段，信心较苏醒期有了上升，经济整体有明显的上升趋势，股票资产有明显收益。
\end{itemize}

	通过划分得到的6中经济状态，以及过去20年中国的相关经济指标变动数据，我们可以将中国宏观经济状态划分为不同的阶段。

	\begin{center}
	\begin{tabular}{c|c}
		时间 & 周期\\
		\hline
		2001年-2002年& 扩张期\\
		2003年-2004年& 过热期\\
		2005年 &滞涨期\\
		2006年-2011年 & 萎靡期\\
		2012年-2015年 &苏醒期\\
		2015年-2019年 & 复苏期\\
		2020年-2021年 & 萎靡期
	\end{tabular}
\end{center}

\vspace{1em}

	中国在2001年成功加入世贸组织。从2001年到2002年，GDP、CPI和消费者信心指数都在持续上升呈现利好，宏观经济运行状态正处于扩张期。
	而到了2003年，通胀持续上升进而对消费者的消费欲望以及购买力带来冲击，宏观经济运行状态进入经济上行，通胀上行，可信心下行的过热期。
	2005年，通胀持续走高影响经济发展，经济状态进入滞胀期。央行开始使用货币政策调控通胀并伴随着金融危机的到来，中国宏观经济状态在2006到2011年进入萎靡期。
	跟随着”十二五“规划的脚步，经济运行状态进入于2012年进入苏醒期，但由于消费者信心指数具有一定的滞后性消费者对当今经济局势仍不乐观，三大指标呈现GDP上行通胀和消费者信心指数下行的局面。
	度过一段处于苏醒期的时间之后，消费者认为当今消费局势良好，同时国家大力推动”互联网+“战略，我国于2016年进入复苏期。
	经济基础的不断磨练经济利好条件的不断积累本应该即将进入飞速增长的扩张期，但到了2020年，
	突如其来的疫情带来的停工、管控导致经济倒退回了萎靡期，经济形势不好，但仍具备前几年积累的一定经济利好，几年就会回到疫情前的水平。

	\newpage
	\subsection{问题二的求解}

	通过解决问题一中的宏观经济状态定义，预测未来五年中国的各方面经济指标，并划分未来五年的宏观经济环境。

	本文利用excel中自带的预测模型进行模拟，可以画出GDP、CPI、RPI、CCI四种不同经济指标的未来五年数值折线图。（到2026年12月）

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.2]{GDP forecast.png}
		\caption{GDP预测}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.2]{CPI RPI forecast.png}
		\caption{通胀预测}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.2]{CCI forecast.png}
		\caption{CCI预测}
	\end{figure}
	
	
	由图中我们可以看出，虽然GDP在上涨，但实际上GDP增速在减缓，其实呈现出GDP下滑的趋势，
	此外通胀水平再2021年到2025年间虽有起伏，但总体在2020年水平之下，
	由于该数学预测模型并未有考虑现实中疫情的影响，因此未来五年内中国CCI将接近预测中的置信下限，
	故未来五年2021年-2026年中国的经济状态将持续为萎靡阶段，GDP、通胀水平（CPI）、CCI都处于地位。

	此外，在2020年以前中国实为苏醒期过渡到复苏期，但由于2020年后的疫情持续影响中国乃至全球经济，中国经济状态本该从复苏阶段进入利好的扩张期，
	却因突发的疫情影响由复苏期退化到萎靡期，使得整个中国经济状态低迷。
	在2023年到2026年间，中国讲出与上文所定义的复苏阶段。

	\subsubsection{基于LSTM神经网络下的经济环境预测}

	通过excel与matlab中自带的回归预测模型，我们可以大致看出未来五年国内的经济走势，
	利用LSTM神经网络对具体数值进行预测，对分析具体的经济环境、经济指标有着更加重要的作用。

	下面简略介绍LSTM神经网络的相关原理。

	循环神经网络具有记忆性、参数共享并且图灵完备(Turing completeness)，因此选用循环神经网络学习并预测具有一定的准确度与优势。
	本题选用长短期记忆网络LSTM。LSTM由重复模块链形成，每个单个模块称为细胞（元胞）。
	各元胞都有特定的门结构来实现选择性让信息传递，通过LSTM门结构（遗忘门、输入门、细胞状态更新、输出门）信息的传递，实现各个元胞状态的更新。 
	遗忘门的作用是选择性的更新细胞状态。LSTM的第一步是确定元胞状态的更新。
	它通过Sigmoid函数对$h_{t-1}$和$x_t$处理，输出0-1之间的数字。1代表完全保留，而0代表完全遗忘。其中$h_{t-1}$为权重矩阵，$b_f$为偏置项。

	\begin{align*}
		f_t = \sigma (W_f \cdot [h_{t-1},\; x_t] + b_f)
	\end{align*}

	输入门的作用是输入数据，决定细胞状态中储存的信息。
	这一部分分为两步，首先是由Sigmoid层确定输入信息在更新中所占的权重，即哪些信息需要更新。
	接下来通过tanh构建由此时计算形成候选向量$\tilde{C_t}$.

	\begin{align*}
		i_t &= \sigma (W_f \cdot [h_{t-1},\; x_t] + b_f)\\
		\tilde{C_t}&= tanh(W_c \cdot [h_{t-1},\; x_t] + b_c)
	\end{align*}

	接下来更新上一个细胞状态$C_{t-1}$，将该矩阵与遗忘门处理后的上一个元胞状态相加形成$C_t$。
	将上一个状态矩阵乘以$f_t$，表示对上一个细胞状态的选择性记忆。
	之后我们将得到的值加上$i_t \cdot \tilde{C_t}$，得到的是新的细胞状态$C_t$。

	\begin{align*}
		C_t = f_t \cdot C_{t-1} + i_t \cdot \tilde{C_t}
	\end{align*}

	最后输出门将基于当前细胞状态进行输出，将当前输入数据通过Sigmoid层。
	然后将当前细胞状态通过tanh层，将矩阵的归一化到-1和1之间，并将其与Sigmoid层的输出进行基本积运算，
	至此，确定了输出部分的数据。

	\begin{align*}
		o_t &= \sigma (W_f \cdot [h_{t-1},\; x_t] + b_o)\\
		h_t &= o_t \cdot tanh (C_t)
	\end{align*}

	通过上述LSTM细胞单元构成的模块链网络，
	能通过对输入数据的不断学习进而对未来进行预测。

	按照7：1.5：1.5的比例将过去20年中240个月分为训练集、验证集、测试集，
	分别用于模型训练、超参数调优、模型检验。
	下图为利用LSTM对问题一中选取的4个指标中的3个指标的相关图像。

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.8]{Q2.png}
		\caption{未来五年指标变化}
	\end{figure}

	\newpage
	\subsection{问题三模型建立与求解}

	\subsubsection{问题三中指数的选取}

	在本问题中，要求挑选出可以代表四个大类资产的四个指数，这四个大类资产分别为，股票、大宗商品、债券、现金及其等价物。
	我们首先挑选代表股票的指数。
	使用KMO检验我们可以得出，关于附件二关于股票的四个指数的KMO值为0.7354，因此可以对四个指数进行主成分分析。
	将四列数据组成矩阵data，将矩阵放入主成分分析的MATLAB程序中，我们可以得知主成分特征向量为

	\begin{align*}
		eivec = [0.4973,-0.5410,0.6622,0.1466].
	\end{align*}
	因此四个指数的具体比重分别为vec2中的四个分量，故四个指数对于股票资产环境的描述具有一定的区分，可以看出选择中证500作为代表股票资产是比较合理的选择。
	此外中证500是以沪深300指数为基础构建的，代表了中小型企业的相关指数，相对的波动性较大、风险偏高，
	同时也代表了中国经济市场情绪的相关指数，对描述中国相关经济环境有一定的作用。

	对于大宗商品，由于所给的两个指标的KMO值过低，约为0.5，因此不便于采用主成分分析法确定代表性指标。
	经过人工分析，两个指标在绝对趋势下并没有本质的区别，并且相对趋势基本相同。
	故两个指标从本质上描述大宗商品是完全一致的，同时标普高盛商品全收益指数的数据区间更大，也是全球推崇的可投资大宗商品指数，
	该指数是国际市场上资金跟踪量最大的商品指数，一定程度上反映经济通胀与风险。
	
	对于债券，KMO=0.7165，故通过主成分分析我们可以得知主成分特征向量为

	\begin{align*}
		eivec=[0.5769,	0.8140,	0.0676].
	\end{align*}
	因此我们选择以中债-综合财富(3-5年)指数作为债券的代表指数。

	对于现金及其等价物我们则不再额外寻找数据，选择附件二中所给的唯一的货币基金作为代表指数。

	\subsubsection{未来五年中国大类资产指数的预测}

	由于全题都需要在未来五年中国相关经济指数下进行，因此我们利用LSTM神经网络模型，对未来五年中国大类资产指数进行预测。

	下图是上一小节中选取的指数的预测。

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.22]{z x.png}
		\caption{债券与现金的预测}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.22]{z d.png}
		\caption{中证指数与大宗商品指数的预测}
	\end{figure}

	\subsubsection{风险收益特征的计算}

	\begin{equation}
		\mbox{预期收益率}=\frac{\mbox{期末价格}-\mbox{期初价格}+\mbox{现金股息}}{\mbox{期初价格}}
	\end{equation}
	为了计算相关的风险收益特征，必须清楚风险收益特征的相关定义以及计算。
	期望收益率指投资者持有一种理财产品或者投资组合期望在下一个时期所能获得收益率。
	这仅仅是一种期望值，实际收益很可能偏离期望收益。
	期望值的估算可以简单地根据过去该种金融产品或者投资组合的平均收益来表示，或用计算机模型模拟，或根据内幕消息来确定期望收益。
	当各资产嘚期望收益率的加权平均，权重是资产的价值与组合的价值的比率。

	\begin{equation}
		\mbox{夏普比率}=\frac{\mbox{预期收益率}-\mbox{无风险利率}}{\mbox{标准差}}
	\end{equation}

	夏普比率（Sharpe Ratio），又被称为夏普指数——基金绩效评价标准化指标。
	夏普比率在现代投资理论的研究表明，风险的大小在决定组合的表现上具有基础性的作用。

	期望收益率标准差反映了基金收益的波动幅度（即波动率）。标准差越大，风险（或波动）就越大，而标准差越小，风险（或波动）就越小。
	波动越大，说明基金收益越不稳定，反之，波动越小，说明收益越稳定，所以标准差是衡量基金收益稳定程度的一个指标，它代表的是风险。

	因此利用附件2中的具体数值我们可以获得风险收益特征的图表。

	
	中证500与标普高盛商品全收益指数波动较大，中证500总体呈现增长，在经济过热滞涨与复苏期间呈现周期性轻微负收益；
	标普高盛商品全收益指数在经济扩张与过热期间迅猛增长，在经济萎靡与经济苏醒期间呈现负增长的趋势，随后恢复稳定；
	中债-综合财富(3-5年)指数与货币基金较为稳定，保持在0\%收益率附近。

	
	四个指数在经济周期初期，包括经济扩张和过热时期，均能达到较高的夏普比率，表明经济扩张与过热时期的超额收益率较高；随后在经济
	滞涨、萎靡、苏醒、复苏时期，夏普比率趋于稳定。
	从过往20年的指数来看，期望收益率出现波动最大的是代表大宗商品的标普高盛商品全收益指数，同时该指数的极差接近10\%，
	收益情况被经济状态影响较大，从03、04年的过热期，大宗商品收益极高到进入滞胀期和萎靡期，收益大幅下跌，
	但随着经济状态进入苏醒期，该指数下跌趋势放缓并达到最小值，后续跟随着复苏期利好的经济形势，
	大宗商品收益率不断增长最后趋于平稳。波动次之的是代表股票的中证500指数，
	前半段时间内伴随着经济状态处于扩张期转向过热、滞胀期，中证500指数收益持续下跌，但随着经济形势逐渐转好，
	收益也在不断提高。虽然中途急剧下降但很快又持续拔高。那对于代表债券和现金及其等价物的指数来说，
	整段时间内都处于一个相对平稳的状态，无论是收益率还是代表风险指数的收益率标准差都保持同一水平，
	受到经济状态改变的影响并不大，只会在小段时间内出现明显上升或下降趋势但很快就完成回调。

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.4]{expect income.jpg}
		\caption{期望收益率}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.4]{sharpe ratio.jpg}
		\caption{夏普比率}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.4]{expect income std.jpg}
		\caption{期望收益率标准差}
	\end{figure}
	
	\subsubsection{指数的相关性}

	指数的相关性表征了大类资产内蕴的相关联系，因此计算大类资产指数的相关性具有一定的指导价值。
	利用excel以及matlab，我们可以计算出相关性系数矩阵，以及相关系数对应表示的热力图。

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.53]{heat map.png}
		\caption{指数的热力图}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.37]{corrcoef.jpg}
		\caption{指数的相关性系数}
	\end{figure}


	\newpage
	\subsection{问题四的求解}

	\subsubsection{国内未来五年的经济状态}

	从预测出的数据来看，2022年将会继续延续20年到21年的萎靡状态，消费者信心指数在年内小幅波动但总体呈下行趋势。
	随着时间进入2023年，通胀与消费者信心指数下行趋势趋于平稳GDP呈上行趋势，经济运行状态进入苏醒阶段。
	这并不违反萎靡期和苏醒期的特点，在20年以前，经济运行状态就已经处于复苏阶段并正逐渐向扩张期转变，
	突如其来的疫情打断了所有的经济活动迫使进入萎靡期，但本已积累的经济条件和经济利好会促使经济快速发展提前度过苏醒期。
	所以在24年到26年中，经济运行状态回到了20年以前的复苏期，GDP飞速增长，消费者信心指数持续走高，经济形势保持利好。

	\subsubsection{基于迭代法投资组合的求解}

	由于未来的资产指数的不可确定性，在求解合适的大类资产配置时可以将投资风险的最小化作为目标，以期望的收益率作为限制条件。
	因此本文选取最优化算法，结合不动点迭代的拟牛顿法进行求解。
	
	我们定义参数$\bm{\bm{\omega}^{\top}\Sigma\bm{\omega}}$是风险的表达式。然后，目标函数问题变为最小化问题：

	\begin{align*}
		& \bm{\hat \bm{\omega}} =argmin \: \bm{\bm{\omega}^{\top}\Sigma\bm{\omega}} \\
		s.t. \quad &\bm{\bm{\omega}^{\top} \mu}=\rho , \quad \bm{\bm{\omega}^{\top}1_{N}}=\bm{1},\quad \bm{\omega} \geq \bm{0_{N}}. 
	\end{align*}

	其中，这里表示$N-dimension$投资组合，并分别表示这些$N$资产的预期收益 $\bm{\mu}$和收益协方差$\bm{\hat \bm{\omega}}$。
 	而$\bm{\bm{\omega}^{\top} \mu}=\rho$表示总回报率为回报水平$\rho$，
	$\bm{\bm{\omega}^{\top}1_{N}}=\bm{1},\quad \bm{\bm{\omega} \geq 0_{N}}$表示每项资产的总比重等于1，也$>$0。

	一个多元变量问题可以转变为不动点迭代问题，设立

	$$
	\bm{A}:=
		\begin{pmatrix}
			\bm{\mu} \\
			\bm{1_{N}} \\
		\end{pmatrix}
	\qquad 
	\bm{b}:=
	\begin{pmatrix}
		\rho \\
		1 \\
	\end{pmatrix}
	$$
	$$ \bm{A \bm{\omega} }\geq \bm{b} \ and -\bm{A\bm{\omega}} \geq -\bm{b}$$
	$$ \bm{D}:=\begin{pmatrix}
		\bm{b} \\ -\bm{b} \\ \bm{0_{N}}
	\end{pmatrix} \in \mathbb{R}^{(N+4)\times N} 
	\qquad 
	\bm{d}:=\begin{pmatrix} \bm{A} \\ -\bm{A} \\ \bm{I} \end{pmatrix} \in \mathbb{R}^{(N+4)}$$
	$$  \bm{\hat \bm{\omega}} =argmin \ f_{1}(\bm{\omega})$$
$$  s.t. \quad \bm{D}\bm{\omega} \geq \bm{d} $$
$$ \iota_{\bm{d}}(\bm{x}):=
\begin{cases}
	0, & \text{if $\bm{x} \geq \bm{d}$} \\
	+\infty , & \text{ else} .
\end{cases}
$$

\par由于这是一个多元约束问题，我们可以等价地将其转化为无约束的多元函数极值问题的模型。
最后，将其转化为定点问题。

	本文将其在matlab中表达，可以输出最后的结果。

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.15]{portfolio income.jpg}
		\caption{资产配置收益率}
	\end{figure}

	\begin{figure}[htbp]
		\centering
		\includegraphics[scale=0.15]{portfolio sp.jpg}
		\caption{资产配置夏普比率}
	\end{figure}

	在程序中设立200\%的期望收益率，最终计算出收益率标准差为0.2811。

	\newpage
	\begin{thebibliography}{9} %参考文献
		\bibitem{bib:one}周亮，基于美林投资时钟的我国大类资产配置探讨. 上海经济. 2018,(01)
		\bibitem{bib:two}晁嘉豪，美林时钟新框架的研究与构建. 上海外国语大学上海市211工程院校教育部直属院校
		\bibitem{bib:three}陈雷，李烁烁，资产配置的选择与优化策略研究——基于“美林投资时钟”的视角. 金融论坛2022年第6期（总第318期）
		\bibitem{bib:four}ID：“三年500篇”，主成分分析——KMO检验. \\\url{https://blog.csdn.net/qq_43517528/article/details/119653072}
		\bibitem{bib:five}ID：“坚持，再坚持一下”，聚类分析（三） 层次聚类及matlab程序. \\\url{https://blog.csdn.net/sinat_38648388/article/details/84142412}
		\bibitem{bib:six}ID：“xia ge tou lia”，多元统计分析——聚类分析——层次聚类. \\\url{https://blog.csdn.net/huangguohui_123/article/details/106995538}
		\bibitem{bib:seven}ID:“小明仔”，基金常用的一些风险评估指标-夏普比率与标准差. \\\url{https://zhuanlan.zhihu.com/p/387771948}
		\bibitem{bib:eight}ID:“耳朵大师兄”，资产配置模型学习笔记（一）： 风险与收益. \\\url{https://zhuanlan.zhihu.com/p/32401251}
\end{thebibliography}

	\section{附录}
	问题一的主要代码如下
	\begin{lstlisting}
clc,clear
%从excel中读取数据
data=xlsread('大类资产指数行情数据.xlsx','大类资产指数行情数据','H4:J7706');   
%数据的标准化 matlab内置的标准化函数   
data=zscore(data);    
%计算相关系数矩阵r
r=corrcoef(data);      

%利用相关系数矩阵进行主成分分析
%lamda为r的特征值，rate为各个主成分的贡献率
[vec1,lamda,rate]=pcacov(r);      
%构造与vec1同维数的元素为±1的矩阵
f=repmat(sign(sum(vec1)),size(vec1,1),1);  
vec2=vec1.*f;     
%修改特征向量的正负号，使得每个特征向量的分量和为正，即为最终的特征向量        
%num为选取的主成分的个数,这里选取特征值大于1的
num = find(lamda>1, 1, 'last' ); 
df=data*vec2(:,1:num);    
%计算各个主成分的得分
tf=df*rate(1:num)/100;   
%计算综合得分
[stf,ind]=sort(tf,'descend'); 
%把得分按照从高到低的次序排列
%stf为得分从高到低排序，ind为对应的样本编号
stf=stf'; ind=ind';           
	\end{lstlisting}

	\newpage
	问题二、三的预测问题主要代码如下，以预测消费者信心指标CCI为例。
	\begin{lstlisting}
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras import layers
from sklearn.preprocessing import MinMaxScaler
from keras import regularizers

#### 数据处理部分 ####

# 读入数据
google_stock = pd.read_excel('年度汇总.xlsx', sheet_name="Sheet4")
google_stock.tail()  # 查看部分数据
google_stock.head()

# 时间戳长度
time_stamp = 3  # 输入序列长度

# 划分训练集与验证集
google_stock = google_stock[['CCI 月']]
lt = 230
train = google_stock[0:lt]
valid = google_stock[200 - time_stamp:lt + time_stamp]
test = google_stock[lt + 1:]

# 归一化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(train)
x_train, y_train = [], []

# 训练集切片
for i in range(time_stamp, len(train) - 5):
    x_train.append(scaled_data[i - time_stamp:i])
    y_train.append(scaled_data[i: i + 5])

x_train, y_train = np.array(x_train), np.array(y_train).reshape(-1, 5)

# 验证集切片
scaled_data = scaler.fit_transform(valid)
x_valid, y_valid = [], []
for i in range(time_stamp, len(valid) - 5):
    x_valid.append(scaled_data[i - time_stamp:i])
    y_valid.append(scaled_data[i: i + 5])
x_valid, y_valid = np.array(x_valid), np.array(y_valid).reshape(-1, 5)

# 测试集切片
scaled_data = scaler.fit_transform(test)
x_test, y_test = [], []
for i in range(time_stamp, len(test) - 5):
    x_test.append(scaled_data[i - time_stamp:i])
    y_test.append(scaled_data[i: i + 5])
x_test, y_test = np.array(x_test), np.array(y_test).reshape(-1, 5)
#### 建模部分 ####
model = keras.Sequential()
model.add(layers.LSTM(64, return_sequences=True, input_shape=(x_train.shape[1:])))
model.add(layers.LSTM(64, return_sequences=True))
model.add(layers.LSTM(32))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(5))
model.compile(optimizer=keras.optimizers.Adam(), loss='mae', metrics=['accuracy'])
learning_rate_reduction = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', patience=3, factor=0.7,
                                                            min_lr=0.0001)
history = model.fit(x_train, y_train,
                    batch_size=128,
                    epochs=100,
                    validation_data=(x_valid, y_valid),
                    callbacks=[learning_rate_reduction])
# loss变化趋势可视化
# plt.plot(history.history['loss'],label='training loss')
# plt.plot(history.history['val_loss'], label='val loss')
# plt.show()
closing_CCI = model.predict(x_test)
model.evaluate(x_test)
scaler.fit_transform(pd.DataFrame(valid['CCI 月'].values))

# 反归一化
closing_CCI = scaler.inverse_transform(closing_CCI.reshape(-1, 5)[:, 0].reshape(1, -1))  # 只取第一列
y_test = scaler.inverse_transform(y_test.reshape(-1, 5)[:, 0].reshape(1, -1))

# 计算预测结果
rms = np.sqrt(np.mean(np.power((y_test[0:1, 5:] - closing_CCI[0:1, 5:]), 2)))
print(rms)
print(closing_CCI.shape)
print(y_test.shape)

# 预测效果可视化
dict_data = {
    'Predictions': closing_CCI.reshape(1, -1)[0],
    'CCI': y_test[0]
}
data_pd = pd.DataFrame(dict_data)
plt.plot(data_pd[['Predictions']][0:31], linewidth=3, alpha=0.8)
plt.xlabel('years')
plt.ylabel('CCI')
plt.title('CCI in future 5 years')

dataframe = pd.DataFrame(data_pd[0:60])
dataframe.to_excel('CCI forecast.xlsx')
plt.savefig('E:\\gitee\\dwq2022\\python code', dpi=320)

	\end{lstlisting}

	\newpage
	问题四的相关matlab函数以及主程序。

	\begin{lstlisting}
clc;
global ndata intdata N base;
r=1280;c=4;
% f=30;p=30;base=30;
f=256;
p=f;
base=f;
N=c;ro=2;

%归一化
avg=mean(data);
st=std(data);
ndata=(data-avg)./st;

%计算收益率
for i=2:1:1280
    for j=1:4
        intdata(i,j)=ndata(i,j)/ndata(i-1,j);
    end
end

py=zeros(r,1);
w=zeros(N,1);
w(1,1)=1;
y=ones(N+4,1)./N;
s=zeros(r,1);
s(1)=1;
wh=ones(c,r)./c;                                    %每次交易仓位记录矩阵 ω^hat
rr=ones(r,1);                                       %每次交易各股票真实收益率 real return
sp=zeros(r,1);                                      %夏普比率
d=zeros(r,1); 
for i=f:p:r
    [w,y]=q4_fun(w,y,i,ro);
    for j=i-p+1:i
        wh(:,j)=w;
    end
end
for T=2:1:r
    s(T)= (intdata(T,:) * wh(:,T)).* s(T-1);
    rr(T)= intdata(T,:) * wh(:,T);
end
for T=2:1:r
    d(T)=(rr(T)-min(rr(T:r,:)))/(rr(T));
    if T<=r-f
        py(T)=prod(rr(T:T+f-1));
    else
        py(T)=prod(rr(T:r));
    end
end
for i=2:1:r
    if i<=r-f
        sp(i)=(py(i)-1-0.015)/std(rr(i:i+f-1));
    else
        py(i)=(py(i)-1-0.015)/std(rr(i:r));
    end
end
t=1:1:r;
plot(t,s','r');
xlabel('5年交易日')
ylabel('投资配置收益率')
hold on
plot(t,sp','b');
xlabel('5年交易日')
ylabel('投资配置夏普比率')

disp(ro)                     %期望收益
std(rr)                     %收益率标准差

	\end{lstlisting}

	\begin{lstlisting}
function [w,y]=q4_fun(w,y,T,ro)
global intdata N base;

iters=10^4;
tol=10^(-3);
mu=intdata(T,:)';

A=[mu';ones(1,N)];
b=[ro;1];
D=[A;-A;eye(N)];
d=[b;-b;zeros(N,1)];
sig=cov(intdata(T-base+1:T,:));

L1=2*norm(sig,2);
beta=1/L1;
omega=(2-beta*L1)/(4*beta* (norm(D,2)^2) + L1*(2-beta*L1));

for i=0:1:iters
    wp=w;
    w=w-beta.*(2.*sig*w + D'*y);
    y=omega.*((1/omega).*y + D*(2.*w-wp) - max((1/omega).*y + D*(2.*w-wp),d));
    w=w./(sum(w));
    if norm(w-wp,2)/norm(wp,2)<=tol
        break;
    else
        continue;
    end
end

for i=1:4
    if w(i)<0
        w(i)=0;
    end
end
end
	\end{lstlisting}

\end{document}